<?php
/***
 * Classe controladora de Fotos
 * 
 * TODO Esses Controladores_Cruds deveriam lidar com Zend_Db_Row, 
 * 
 * Sobrescreve:
 * 	getBean() - vai devolver um conjunto de beans ao invés de um bean
 *  persisteInsere() -  vai iterar entre os beans e persistí-los.
 * Adiciona
 * 	legenda
 */
class PC4_Controlador_Crud_Fotos extends TICE_Controlador_CrudUpload
{
	public $campoUpload;
	
    public function init()
    {
    	if(empty($this->tabela)){ $this->tabela = 'fotos'; }
		if(empty($this->campoUpload)){ $this->campoUpload = 'imagem'; }

		$request = Zend_Controller_Front::getInstance()->getRequest();
		$this->view->controladorAtual = $request->getControllerName();
		
		//seta uma view generica de arquivos
		//$this->view->render('crud/partes/form/categoria.phtml');
		
		$this->view->campoUpload = $this->campoUpload;
		$this->view->idFk = $this->_getParam('id');
    	$this->view->secao = $this->_getParam('secao');
    	$this->view->urlParams = '&id=' . $this->view->idFk . '&secao=' . $this->view->secao;
		$this->view->msg = $this->_helper->flashMessenger->getMessages();		
    }

    protected function getDados($where = null, $order = null, $count = null, $offset = null) {
    	$id = $this->_getParam('id');
    	$secao = strtoupper($this->_getParam('secao'));    	
    	$this->view->secao = $secao;
    	if ($where == null) {
    		$where = $this->modelo->getSelect();
    	}
    	if(!empty($id)){
    		$where->where('fk = ?', $id);
    	}    	
    	if(!empty($secao)){
    		$where->where('secao = ?', $secao);
    	}
    	return parent::getDados($where, $order, $count, $offset);
    }
    
	protected function getBean($id = 0) {
		$campos = parent::getBean($id);
		$campos['fk'] = $campos['id_fk'];
		unset($campos['id_fk']);
		unset($campos['legenda']);
		unset($campos['controlador']);
		if(is_array($campos[$this->campoUpload])){
			$registros = array();
			foreach ($campos[$this->campoUpload] as $arquivo){
				$registro[$this->campoUpload] = $arquivo;
				if(!empty($campos['secao'])){
					$registro['secao'] = $campos['secao'];
				}
				if(!empty($campos['fk'])){
					$registro['fk'] = $campos['fk'];
				}
				$registros[] = $registro;
			}
		}else{
			if(empty($campos['secao'])){
				unset($campos['secao']);
			}
			if(empty($campos['fk'])){
				unset($campos['fk']);
			}
			return array($campos);
		}
		return $registros;
	}
    
	protected function persisteInsere($registros) {
		$ids = array();
		foreach ($registros as $r){
			$ids[] = $this->modelo->insert($r);
		}
		return implode(',', $ids);
	}
        
	function resultadoInsere($resultado){
		$this->_helper->flashMessenger($resultado);
		$this->_redirect('admin/' . $this->view->controladorAtual . '/lista?id=' . $this->_getParam('id_fk') . '&secao='. $this->_getParam('secao'));
	}
	
	/**
	 * salva a legenda passada
	 */
	function persistelegendaAction(){
		$this->_helper->viewRenderer->setNoRender(true);
		$this->modelo->update(array('legenda' => $this->_getParam('legenda')), 'id = ' . $this->_getParam('id'));
	}
}